import globals from 'globals'
import js from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
import VueEslintParser from 'vue-eslint-parser'
// 自 9.0 以来，eslint 不再有格式化规则，typescript 的主要维护者在他的文章 "You Probably Don't Need eslint-config-prettier or eslint-plugin-prettier" 中建议不要使用 `eslint-config-prettier`。
// import eslintConfigPrettier from 'eslint-config-prettier'
// import fs from 'fs'
// import path from 'path'
// import { fileURLToPath } from 'url'
import eslintPluginPrettier from 'eslint-plugin-prettier/recommended'

// 获取当前文件的目录路径
// const __filename = fileURLToPath(import.meta.url)
// const __dirname = path.dirname(__filename)

// 读取 .eslintrc-auto-import.json 文件
// 导入到全局，用于 ts 自动识别
// .eslintrc-auto-import.json 来自 vite 插件 unplugin-auto-import
// unplugin-auto-import 插件作用自动导入预设库的 API，在使用的地方不在需要手动 import 导入
// 具体配置在 vite.config.ts ，如果没有使用 unplugin-auto-import 这里配置可以忽略

// const autoImportPath = path.resolve(__dirname, 'src/types/.eslintrc-auto-import.json')
// const autoImportConfig = JSON.parse(fs.readFileSync(autoImportPath, 'utf8'))

export default [
  {
    files: ['src/**/*.{js,mjs,cjs,ts,mts,jsx,tsx,vue}']
  },
  {
    languageOptions: {
      globals: {
        ...globals.browser,
        ...globals.node
        // ...autoImportConfig.globals, // 合并自动导入的 globals
      },
      parser: VueEslintParser,
      parserOptions: {
        parser: '@typescript-eslint/parser',
        ecmaFeatures: {
          jsx: true
        }
      }
    }
  },
  js.configs.recommended,
  ...tseslint.configs.recommended,
  ...pluginVue.configs['flat/essential'],
  {
    rules: {
      'vue/no-unused-components': 'off', // 关闭未使用组件的警告
      'vue/multi-word-component-names': 'off', // 关闭多单词组件名的警告
      'vue/no-v-html': 'off', // 关闭 v-html 的警告
      'vue/no-mutating-props': 'off', // 关闭 props 可变的警告
      'vue/no-setup-props-destructure': 'off', // 关闭 setup 中 props 解构的警告
      'vue/no-undef-properties': 'off', // 关闭未定义属性的警告
      'vue/no-unused-vars': 'off', // 关闭未使用变量的警告
      'vue/require-default-prop': 'off', // 关闭默认 prop 的警告
      'prettier/prettier': ['error', {}, { usePrettierrc: true, configFile: 'prettier.config.js' }] // 指定使用 prettier.config.js 配置文件
    }
  },
  //eslintConfigPrettier,
  eslintPluginPrettier, // 使用 prettier 规则
  {
    ignores: ['node_modules/', 'dist/', '**/*.d.ts', 'public/', '**/*.cjs']
  }
]
